The present invention will be described with an example application for an Ethernet computer network peripheral device which couples a host computer system to a network of computers. In this example application, a CPU of the host computer system and the Ethernet computer network peripheral device share access to a shared memory within the host computer system. However, from this example application, it should be appreciated by one of ordinary skill in the art of electronic systems design that the present invention may be practiced for other applications requiring tracking of processing of elements from a list of elements that is shared for access between multiple electronic devices.
In particular, the present invention is described with respect to a list of descriptors that are shared for access between the CPU and the computer network peripheral device as described herein. However, from this example application, it should be appreciated by one of ordinary skill in the art of electronic systems design that the present invention may be practiced for any list of any type of elements that are processed, aside from just the example of a list of descriptors.
Referring to FIG. 1, a computer peripheral device 102 may be an Ethernet computer network peripheral device which allows a host computer 104 to communicate with other computers within a network of computers 106. Such a computer peripheral device 102 receives and transmits data packets on the network of computers 106. The computer peripheral device 102 which may be an Ethernet computer network peripheral device receives and transmits data packets on the network of computers 106 in accordance with standard data communications protocols such as the IEEE 802.3 network standard or the DIX Ethernet standard as is commonly known to one of ordinary skill in the art of Ethernet computer network peripheral device design.
The host computer 104 may be a PC or a workstation, and has a host system which includes a CPU 108 and a shared memory 110 which may be any data storage device found in a PC or a workstation. The CPU 108 further processes a data packet received from the network of computers 106 or generates a data packet to be transmitted on the network of computers 106. The shared memory 110 is shared between the CPU and the computer network peripheral device 102. In a DMA (Direct Memory Access) mode of operation, the computer network peripheral device 102 has direct access to the shared memory 110 within the host system of the computer 104.
When the computer network peripheral device 102 receives a data packet from the network of computers 106, that data packet is written into the shared memory 110 directly by the computer network peripheral device 102 for further processing by the host system CPU 108. The CPU 108 also accesses the shared memory 110 to further process the data packet stored within the shared memory 110.
Alternatively, the CPU 108 accesses the shared memory 110 to write a data packet to be transmitted on the network of computers 106. The computer network peripheral device 102 then accesses the shared memory 110 to read the stored data packet in order to transmit such a data packet over the network of computers 106.
Since both the CPU 108 and the computer network peripheral device 102 access the shared memory 110, such shared access to the shared memory 110 is coordinated between a first device (i. e. the CPU 204) and a second device (i.e. the computer network peripheral device 102) for harmonious interaction between the two devices. A mechanism for keeping track of which part of the shared memory 110 is available to any one electronic device further ensures harmonious interaction.